From 16dc686834842ca1e2a894453213ea99a97e5327 Mon Sep 17 00:00:00 2001 From: "smh22@firebug.cl.cam.ac.uk" Date: Fri, 25 Nov 2005 10:51:09 +0100 Subject: [PATCH] Use page-sized batches in GETPAGEFRAMEINFO2 (and generally tidy up). Signed-off-by: Steven Hand --- xen/arch/x86/dom0_ops.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/dom0_ops.c b/xen/arch/x86/dom0_ops.c index 826150219d..380c01b932 100644 --- a/xen/arch/x86/dom0_ops.c +++ b/xen/arch/x86/dom0_ops.c @@ -248,7 +248,7 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op) case DOM0_GETPAGEFRAMEINFO2: { -#define GPF2_BATCH 128 +#define GPF2_BATCH (PAGE_SIZE / sizeof(unsigned long)) int n,j; int num = op->u.getpageframeinfo2.num; domid_t dom = op->u.getpageframeinfo2.domain; @@ -285,12 +285,9 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op) struct pfn_info *page; unsigned long mfn = l_arr[j]; - if ( unlikely(mfn >= max_page) ) - goto e2_err; - page = &frame_table[mfn]; - - if ( likely(get_page(page, d)) ) + + if ( likely(pfn_valid(mfn) && get_page(page, d)) ) { unsigned long type = 0; @@ -316,10 +313,7 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op) put_page(page); } else - { - e2_err: l_arr[j] |= XTAB; - } } @@ -329,7 +323,7 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op) break; } - n += j; + n += k; } free_xenheap_page(l_arr); -- 2.30.2